﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Cotizav.Presentacion.WinForms.Maestro
{
    public partial class Distrito : Form
    {
        public Distrito()
        {
            InitializeComponent();
        }

        private void Distrito_Load(object sender, EventArgs e)
        {
            LoadListProvincia();
        }

        private void LoadListProvincia()
        {
            LogicaNegocio.ProvinciaBLL provinciaBLL = new LogicaNegocio.ProvinciaBLL();
            cmbProvincia.DataSource = provinciaBLL.Listar();
            cmbProvincia.DisplayMember = "NombreProvincia";
            cmbProvincia.ValueMember = "IdProvincia";
            cmbProvincia.SelectedIndex = -1;
        }

        private void LoadGridDistrito()
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                int selectedID = Int32.Parse(cmbProvincia.SelectedValue.ToString());

                LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();
                List<Entidades.Distrito> listaDistrito = distritoBLL.ListarDistrito(selectedID);

                gridDistrito.DataSource = listaDistrito;
                gridDistrito.ClearSelection();
            }
        }

        private void btnMostrar_Click(object sender, EventArgs e)
        {
            LoadGridDistrito();
        }

        private void gridDistrito_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            if (gridDistrito.DataSource != null)
            {
                gridDistrito.Columns["IdDistrito"].Visible = false;
                gridDistrito.Columns["NombreDistrito"].HeaderText = "Distrito";
                gridDistrito.Columns["NombreDistrito"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
                gridDistrito.Columns["IdProvincia"].Visible = false;
                gridDistrito.Columns["Activo"].Visible = false;
                gridDistrito.Columns["FechaRegistro"].Visible = false;
                gridDistrito.Columns["FechaModificacion"].Visible = false;
                gridDistrito.Columns["UsuarioRegistro"].Visible = false;
                gridDistrito.Columns["UsuarioModificacion"].Visible = false;
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (cmbProvincia.SelectedIndex >= 0)
            {
                LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();

                try
                {
                    if (btnAgregar.Tag == null)
                    {
                        Entidades.Distrito newDistrito =
                            new Entidades.Distrito()
                            {
                                IdProvincia = Int32.Parse(cmbProvincia.SelectedValue.ToString()),
                                NombreDistrito = txtNombreDistrito.Text,
                                Activo = 1,
                                FechaRegistro = DateTime.Now,
                            };

                        int resultado = distritoBLL.Guardar(newDistrito);

                        if (resultado > 0)
                        {
                            MessageBox.Show("Distrito registrado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                            LimpiarFormulario();
                            LoadGridDistrito();
                        }
                    }
                    else
                    {
                        if (btnAgregar.Tag.ToString() == "M")
                        {
                            if (gridDistrito.SelectedRows.Count > 0)
                            {
                                Entidades.Distrito updDistrito =
                                    new Entidades.Distrito()
                                    {
                                        IdDistrito = (gridDistrito.SelectedRows[0].DataBoundItem as Entidades.Distrito).IdDistrito,
                                        IdProvincia = cmbProvincia.SelectedIndex >= 0 ? int.Parse(cmbProvincia.SelectedValue.ToString()) : 0,
                                        NombreDistrito = txtNombreDistrito.Text.Trim(),
                                        FechaModificacion =DateTime.Now,
                                        Activo = 1
                                    };

                                int resultado = distritoBLL.Actualizar(updDistrito);

                                if (resultado > 0)
                                {
                                    MessageBox.Show("Distrito actualizado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                                    LimpiarFormulario();
                                    LoadGridDistrito();
                                }
                            }
                        }
                    }
                }
                catch (ApplicationException aex)
                {
                    MessageBox.Show(aex.Message, "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button1);
                }
            }
        }

        private void gridDistrito_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            if (gridDistrito.SelectedRows.Count > 0)
            {
                Entidades.Distrito selectedDistrito = gridDistrito.SelectedRows[0].DataBoundItem as Entidades.Distrito;

                if (selectedDistrito != null)
                {
                    btnAgregar.Tag = "M";
                    btnAgregar.Text = "Modificar";

                    btnCancelar.Visible = true;

                    txtNombreDistrito.Text = selectedDistrito.NombreDistrito.Trim();
                }
            }
        }

        private void btnEliminar_Click(object sender, EventArgs e)
        {
            if (gridDistrito.SelectedRows.Count > 0)
            {
                DialogResult dr = MessageBox.Show("¿Esta seguro en eliminar el distrito?", "Cotizav", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1);

                if (dr == DialogResult.Yes)
                {
                    Entidades.Distrito selDistrito = gridDistrito.SelectedRows[0].DataBoundItem as Entidades.Distrito;

                    LogicaNegocio.DistritoBLL distritoBLL = new LogicaNegocio.DistritoBLL();
                    int resultado = distritoBLL.Eliminar(selDistrito);

                    if (resultado > 0)
                    {
                        MessageBox.Show("Distrito eliminado", "Cotizav", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1);
                        LimpiarFormulario();
                        LoadGridDistrito();
                    }
                }
            }
        }

        private void LimpiarFormulario()
        {
            txtNombreDistrito.ResetText();
            btnAgregar.Tag = null;
            btnAgregar.Text = "Guardar";
            btnCancelar.Visible = false;
        }

        private void btnCancelar_Click(object sender, EventArgs e)
        {
            LimpiarFormulario();
            gridDistrito.ClearSelection();
        }

        private void btnCerrar_Click(object sender, EventArgs e)
        {
            this.Close();                
        }
    }
}
